package com.ruoyi.system.service.impl;

import com.ruoyi.system.domain.Pro;
import com.ruoyi.system.mapper.ProMapper;
import com.ruoyi.system.service.IProService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 【请填写功能名称】Service业务层处理
 *
 * @author ruoyi
 * @date 2024-07-24
 */
@Service
public class ProServiceImpl implements IProService
{
	@Autowired
	private ProMapper proMapper;

	/**
	 * 查询【请填写功能名称】
	 *
	 * @param id 【请填写功能名称】主键
	 * @return 【请填写功能名称】
	 */
	@Override
	public Pro selectProById(Long id)
	{
		return proMapper.selectProById(id);
	}

	/**
	 * 查询【请填写功能名称】列表
	 *
	 * @param pro 【请填写功能名称】
	 * @return 【请填写功能名称】
	 */
	@Override
	public List<Pro> selectProList(Pro pro)
	{
		return proMapper.selectProList(pro);
	}

	/**
	 * 新增【请填写功能名称】
	 *
	 * @param pro 【请填写功能名称】
	 * @return 结果
	 */
	@Override
	public int insertPro(Pro pro)
	{
		return proMapper.insertPro(pro);
	}

	/**
	 * 修改【请填写功能名称】
	 *
	 * @param pro 【请填写功能名称】
	 * @return 结果
	 */
	@Override
	public int updatePro(Pro pro)
	{
		return proMapper.updatePro(pro);
	}

	/**
	 * 批量删除【请填写功能名称】
	 *
	 * @param ids 需要删除的【请填写功能名称】主键
	 * @return 结果
	 */
	@Override
	public int deleteProByIds(Long[] ids)
	{
		return proMapper.deleteProByIds(ids);
	}

	/**
	 * 删除【请填写功能名称】信息
	 *
	 * @param id 【请填写功能名称】主键
	 * @return 结果
	 */
	@Override
	public int deleteProById(Long id)
	{
		return proMapper.deleteProById(id);
	}

	@Override
	public int update(String status, String id) {
		return proMapper.update(status,id);
	}

	@Override
	public List<Pro> selectTypeList() {
		return proMapper.selectTypeList();
	}

	@Override
	public HashMap<String, Integer> selectGroup(Pro pro) {
		List<Pro>  list = proMapper.selectGorupBy(pro);
		HashMap<String, Integer> map = new HashMap<>();
		for (Pro pro1 : list) {
			for (Pro perm : list) {
				//3.从所有的菜单集合中获取菜单的子菜单
				List<Pro> children = list.stream().filter(p -> p.getPid() == perm.getId()).collect(Collectors.toList());
				//4.把查询到的子菜单，设置到父菜单中
				map.put(perm.getName(),children.size());
			}
		}
//		不需要过滤父菜单
//		List<Pro> collect = list.stream().filter(p -> p.getPid() == 0).collect(Collectors.toList());
		return map;
	}
}
